package com.example.science.exception;


import com.example.science.util.Result;
import io.jsonwebtoken.ExpiredJwtException;
import io.jsonwebtoken.MalformedJwtException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import java.security.SignatureException;

@RestControllerAdvice
public class GlobalExceptionHandler {
//    @ExceptionHandler({NoLoginException.class, MalformedJwtException.class, SignatureException.class, ExpiredJwtException.class})
//    public Result handleNoLoginException(NoLoginException e) {
//        return Result.noAuth();
//    }
//
//    @ExceptionHandler(Exception.class)
//    public Result handleException(Exception e) {
//        return Result.fail(e.getMessage());
//    }


    // 处理NoLoginException、MalformedJwtException、SignatureException和ExpiredJwtException异常
    // 当这些异常被抛出时，会调用这个方法，并返回一个Result对象表示没有权限
    @ExceptionHandler({NoLoginException.class, MalformedJwtException.class, SignatureException.class, ExpiredJwtException.class})
    public Result handleNoLoginException(NoLoginException e) {
        // 返回一个代表没有授权的结果
        return Result.noAuth();
    }

    // 处理所有其他的Exception异常
    // 如果抛出的异常不属于上面列出的类型，那么将会由这个方法来处理
    @ExceptionHandler(Exception.class)
    public Result handleException(Exception e) {
        // 返回一个代表失败的结果，并附带异常消息
        return Result.fail(e.getMessage());
    }
}
